In GLMs we’re often modeling the expected value of our prediction. This prediction depends on various predictors. If there are other parameters in the model, we can also have them depend on predictors.
For example: \(\sigma\) in a linear regression.
Error Models
💭 imagine an experiment in which people are supposed to memorize lists of words. One group is told to place “bets” (0-10 points) on remembering each word, with the goal of maximizing their score. The other group is told to rate (scale of 0-10) how likely they are to remember each word with the goal of accurately rating their future recall.
When looking at the scores (bets/ratings) that people gave, we might not only expect differences in the mean between groups, but also differences in the variance between groups.
Error Models
This is actually something we found!
Error Models
But by default, most regression models (e.g. linear regression) assume variance is constant. But we can get around that!
🧠 in GLMs, most assumptions we make are about the residuals/errors in a model. So what if we incorporated differences in variance into the model?
Error Models
Let’s look at a linear regression.
Expected Value
\[
y \sim N(X\beta, \sigma)
\]
Variance
\[
\sigma \sim g(X'\beta')
\]
Error Models
🧠 All we’re doing here is extending which parameters in the model that we allow to be influenced by predictors. If there are other parameters in a model besides expected value and variance, we could models those too (maybe)…
Mixture Models
Mixture models assume data comes from multiple distributions in various proportions.
Mixture Models
Mixture Models
Mixture models assume data comes from multiple distributions in various proportions.
Mixture Models
Gaussian Mixture Models are mixture models we use for clustering!
Zero-One Inflated Beta Regression
💡 we learned that beta regression is good for modeling outcomes \((0,1)\)
Zero-One Inflated Beta Regression
💡 we learned that beta regression is good for modeling outcomes \((0,1)\)
‼️ but beta regression can’t handle actual \(0\)s or \(1\)s
Zero-One Inflated Beta Regression
💡 we learned that beta regression is good for modeling outcomes \((0,1)\)
‼️ but beta regression can’t handle actual \(0\)s or \(1\)s
🧠 mixture model: \(0\)s, \(1\)s, and \((0-1)\)s
Zero-One Inflated Beta Regression
ZOIB is really 3 regressions in a 🧥 (a mixture model)
1. a logistic regression that predicts whether \(y\) is \(0/1\) or if it’s \((0,1)\)
2. a logistic regression that predicts whether a \(0/1\) (from #1) is \(0\) or \(1\)
3. a beta regression that predicts \((0,1)\) outcomes
Zero-One Inflated Beta Regression
Each of these regressions can have predictors that help make the prediction.
💡 these pseudo-equations demonstrate that predictors can have independent (and completely desperate) effects on each of the 3 components.
Zero-One Inflated Beta Regression
❓ What if our model told us that higher income made you more likely to be a \(1\), but that for \((0,1)\) values, higher income gave you smaller predicted values. Would that make sense in your case?
Cumulative Logit Regression
Ordinal Data: discrete choices, ordered categories, e.g. Likert Scales
Assumes there’s a latent continuous trait that causes your responses, e.g. “Agreement”
Figure from Bürkner, P. C., & Vuorre, M. (2019). Ordinal regression models in psychology: A tutorial. Advances in Methods and Practices in Psychological Science, 2(1), 77-101.
Cumulative Logit Regression
latent trait is modeled as a logistic distribution (e.g. Agreement distribution)
Figure from Bürkner, P. C., & Vuorre, M. (2019). Ordinal regression models in psychology: A tutorial. Advances in Methods and Practices in Psychological Science, 2(1), 77-101.
Cumulative Logit Regression
predictors influence the predicted latent score (e.g. predicted Agreement)
Figure from Bürkner, P. C., & Vuorre, M. (2019). Ordinal regression models in psychology: A tutorial. Advances in Methods and Practices in Psychological Science, 2(1), 77-101.
Cumulative Logit Regression
cutpoints are modeled which indicate the threshold in the latent distribution you have to be to get a particular ordinal response
Figure from Bürkner, P. C., & Vuorre, M. (2019). Ordinal regression models in psychology: A tutorial. Advances in Methods and Practices in Psychological Science, 2(1), 77-101.
Cumulative Logit Regression
💡 CLR preserves the importance of order in the responses, while respecting the discreteness of actual observed data
Figure from Bürkner, P. C., & Vuorre, M. (2019). Ordinal regression models in psychology: A tutorial. Advances in Methods and Practices in Psychological Science, 2(1), 77-101.
Ordered Beta Regression
Ordered Beta Regression uses the cumulative logit concept and applies it to data \([0,1]\).
Ordered Beta Regression
💡 ZOIB used mixture models to incorporate \(0\)s and \(1\)s into a beta regression. ‼️ But, because each component is modeled separately it can lead to counter-intuitive results
🧠 Ordered Beta Regression assumes there’s a latent continuous variable that determines whether you’re \(0\), \(1\), or \((0,1)\), predictors impact this latent variable.
\[
y_{latent} = X\beta
\]
Ordered Beta Regression
Fitting GLMs in R
Intro to lm() and Friends
R Model Syntax
y ~ x + y + z
Model Operators
+: Add predictors
:: Interactions only
*: Main effects + interactions (A*B = A + B + A:B)
I(): Arithmetic operations (e.g., I(x\^2))
GLM Families
You can fit generalized linear models with glm() by specifying link and likelihood functions.
GLM Families
You can fit generalized linear models with glm() by specifying link and likelihood functions.
Mixed Effects
You can fit mixed effect models with lmer() or glmer() by specifying random effects.
(1 | group): Random intercepts for each group
(1 + x | group): Random intercepts AND slopes for x
(1 + x|| group): Random intercepts AND slopes for x that are uncorrelated
(1 | group1) + (1 | group2): Multiple random effects
(0 + x | group): Random slopes only (no random intercept)
Mixed Effects
Mixed Effects
Intro to brm() and Friends
BRMS
Paul Bürkner:maintainer of brms
“The brms package provides an interface to fit Bayesian generalized (non-)linear multivariate multilevel models using Stan. The formula syntax is very similar to that of the package lme4 to provide a familiar and simple interface for performing regression analyses”
BRMS Syntax
Luckily, brms syntax is made to mimic lm(), glm(), lmer(), and glmer().
BRMS Syntax
But you have new arguments to think of now:
prior: prior distributions for individual parameters, or classes of parameters
chains: number of chains to sample
iter: number of samples from each chain
We’ll talk more about these in the next course section, and we’ll use the defaults for now, but keep these in mind!
You can also specify models (like error models) for other parameters in your GLM using bf().
Linear Regression (Frequentist)
library(tidyverse)library(brms)library(tidybayes)library(betareg)# Simulate data for linear regression----set.seed(540)n <-100x1 <-rnorm(n)x2 <-rnorm(n)y <-5+2* x1 -1.25* x2 +rnorm(n)df <-data.frame(x1,x2,y)# Linear regression using lm/glm (Frequentist)----linear_lm <-lm(y ~ x1 + x2, data = df)# linear_glm <- glm(y ~ x1 + x2,# family = gaussian(), data = df)summary(linear_lm)
Call:
lm(formula = y ~ x1 + x2, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.63137 -0.61485 0.00385 0.51727 2.43526
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.91352 0.08588 57.21 <2e-16 ***
x1 2.07372 0.09108 22.77 <2e-16 ***
x2 -1.07038 0.08441 -12.68 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.8582 on 97 degrees of freedom
Multiple R-squared: 0.8743, Adjusted R-squared: 0.8718
F-statistic: 337.5 on 2 and 97 DF, p-value: < 2.2e-16
Linear Regression (Interactions)
# Linear regression using lm/glm (Frequentist)linear_lm <-lm(y ~ x1 * x2, data = df)linear_lm2 <-lm(y ~ x1 + x2 + x1:x2, data = df)summary(linear_lm)
Call:
lm(formula = y ~ x1 * x2, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.60416 -0.61440 0.04543 0.49694 2.46525
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.91418 0.08621 57.001 <2e-16 ***
x1 2.06612 0.09253 22.329 <2e-16 ***
x2 -1.07044 0.08473 -12.634 <2e-16 ***
x1:x2 -0.05522 0.10399 -0.531 0.597
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.8614 on 96 degrees of freedom
Multiple R-squared: 0.8747, Adjusted R-squared: 0.8708
F-statistic: 223.4 on 3 and 96 DF, p-value: < 2.2e-16
summary(linear_lm2)
Call:
lm(formula = y ~ x1 + x2 + x1:x2, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.60416 -0.61440 0.04543 0.49694 2.46525
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.91418 0.08621 57.001 <2e-16 ***
x1 2.06612 0.09253 22.329 <2e-16 ***
x2 -1.07044 0.08473 -12.634 <2e-16 ***
x1:x2 -0.05522 0.10399 -0.531 0.597
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.8614 on 96 degrees of freedom
Multiple R-squared: 0.8747, Adjusted R-squared: 0.8708
F-statistic: 223.4 on 3 and 96 DF, p-value: < 2.2e-16
Linear Regression (Bayesian)
# Linear regression using brm (Bayesian)linear_brm <-brm(y ~ x1 + x2, family =gaussian(), data = df)
Running /Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB foo.c
using C compiler: ‘Apple clang version 15.0.0 (clang-1500.3.9.4)’
using SDK: ‘MacOSX14.4.sdk’
clang -arch arm64 -std=gnu2x -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/Rcpp/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/unsupported" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/src/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppParallel/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DUSE_STANC3 -DSTRICT_R_HEADERS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -D_HAS_AUTO_PTR_ETC=0 -include '/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp' -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1 -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c foo.c -o foo.o
In file included from <built-in>:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp:22:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Core:19:
/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Macros.h:679:10: fatal error: 'cmath' file not found
#include <cmath>
^~~~~~~
1 error generated.
make: *** [foo.o] Error 1
Family: gaussian
Links: mu = identity; sigma = identity
Formula: y ~ x1 + x2
Data: df (Number of observations: 100)
Draws: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
total post-warmup draws = 4000
Regression Coefficients:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept 4.91 0.09 4.74 5.09 1.00 4885 2880
x1 2.07 0.09 1.89 2.26 1.00 4561 3299
x2 -1.07 0.09 -1.24 -0.90 1.00 4494 3332
Further Distributional Parameters:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sigma 0.87 0.06 0.76 1.01 1.00 4362 3241
Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).
Logistic Regression (Frequentist)
# Simulate some data for logistic regressionset.seed(540)n <-100x1 <-rnorm(n)prob <-1/ (1+exp(-1-2* x1 +-0.2* x2)) # Logit linky <-rbinom(n, size =1, prob = prob)df <-data.frame(y,x1,x2)# Logistic regression using glm (Frequentist)logistic_glm <-glm(y ~ x1 + x2, family =binomial(), data = df)summary(logistic_glm)
Call:
glm(formula = y ~ x1 + x2, family = binomial(), data = df)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.0086 0.2847 3.543 0.000396 ***
x1 1.8303 0.3863 4.738 2.15e-06 ***
x2 0.3605 0.2675 1.347 0.177857
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 126.836 on 99 degrees of freedom
Residual deviance: 88.209 on 97 degrees of freedom
AIC: 94.209
Number of Fisher Scoring iterations: 5
Logistic Regression (Bayesian)
# Logistic regression using brm (Bayesian)logistic_brm <-brm(y ~ x1 + x2, family =bernoulli(), data = df)
Running /Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB foo.c
using C compiler: ‘Apple clang version 15.0.0 (clang-1500.3.9.4)’
using SDK: ‘MacOSX14.4.sdk’
clang -arch arm64 -std=gnu2x -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/Rcpp/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/unsupported" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/src/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppParallel/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DUSE_STANC3 -DSTRICT_R_HEADERS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -D_HAS_AUTO_PTR_ETC=0 -include '/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp' -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1 -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c foo.c -o foo.o
In file included from <built-in>:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp:22:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Core:19:
/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Macros.h:679:10: fatal error: 'cmath' file not found
#include <cmath>
^~~~~~~
1 error generated.
make: *** [foo.o] Error 1
Family: bernoulli
Links: mu = logit
Formula: y ~ x1 + x2
Data: df (Number of observations: 100)
Draws: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
total post-warmup draws = 4000
Regression Coefficients:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept 1.04 0.29 0.49 1.63 1.00 2824 2446
x1 1.92 0.40 1.21 2.78 1.00 2868 2835
x2 0.39 0.27 -0.12 0.92 1.00 3165 2434
Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).
Poisson Regression
# Simulate some data for Poisson regressionset.seed(540)n <-100x1 <-rnorm(n)x2 <-rnorm(n)lambda <-exp(1+0.5* x1 -0.25* x2) # Poisson rate (log link)y <-rpois(n, lambda)df <-data.frame(x1,x2,y)# Poisson regression using glm (Frequentist)poisson_glm <-glm(y ~ x1 + x2, family =poisson(), data = df)summary(poisson_glm)
Call:
glm(formula = y ~ x1 + x2, family = poisson(), data = df)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.94900 0.06650 14.271 < 2e-16 ***
x1 0.55868 0.06125 9.121 < 2e-16 ***
x2 -0.16575 0.05910 -2.804 0.00504 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for poisson family taken to be 1)
Null deviance: 194.38 on 99 degrees of freedom
Residual deviance: 100.89 on 97 degrees of freedom
AIC: 370.19
Number of Fisher Scoring iterations: 5
Poisson Regression (Bayesian)
# Poisson regression using brm (Bayesian)poisson_brm <-brm(y ~ x1 + x2, family =poisson(), data = df)
Running /Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB foo.c
using C compiler: ‘Apple clang version 15.0.0 (clang-1500.3.9.4)’
using SDK: ‘MacOSX14.4.sdk’
clang -arch arm64 -std=gnu2x -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/Rcpp/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/unsupported" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/src/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppParallel/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DUSE_STANC3 -DSTRICT_R_HEADERS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -D_HAS_AUTO_PTR_ETC=0 -include '/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp' -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1 -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c foo.c -o foo.o
In file included from <built-in>:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp:22:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Core:19:
/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Macros.h:679:10: fatal error: 'cmath' file not found
#include <cmath>
^~~~~~~
1 error generated.
make: *** [foo.o] Error 1
Family: poisson
Links: mu = log
Formula: y ~ x1 + x2
Data: df (Number of observations: 100)
Draws: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
total post-warmup draws = 4000
Regression Coefficients:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept 0.94 0.07 0.81 1.07 1.00 2838 2508
x1 0.56 0.06 0.44 0.68 1.00 2642 2770
x2 -0.17 0.06 -0.28 -0.05 1.00 3047 2476
Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).
Beta Regression (Frequentist)
# Simulate some data for Beta regressionset.seed(540)n <-100x <-rnorm(n)y <-rbeta(n, shape1 =2+ x, shape2 =3- x) # Beta-distributed # Beta regression using betareg (Frequentist)beta_glm <-betareg(y ~ x)summary(beta_glm)
Call:
betareg(formula = y ~ x)
Quantile residuals:
Min 1Q Median 3Q Max
-2.5866 -0.6460 0.1194 0.7097 2.5844
Coefficients (mean model with logit link):
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.56377 0.08954 -6.296 3.05e-10 ***
x 0.91834 0.10294 8.921 < 2e-16 ***
Phi coefficients (precision model with identity link):
Estimate Std. Error z value Pr(>|z|)
(phi) 4.759 0.640 7.436 1.03e-13 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Type of estimator: ML (maximum likelihood)
Log-likelihood: 42.09 on 3 Df
Pseudo R-squared: 0.4843
Number of iterations: 13 (BFGS) + 1 (Fisher scoring)
Beta Regression (Bayesian)
# Beta regression using brm (Bayesian)beta_brm <-brm(y ~ x, family =Beta(), data =data.frame(x, y))
Running /Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB foo.c
using C compiler: ‘Apple clang version 15.0.0 (clang-1500.3.9.4)’
using SDK: ‘MacOSX14.4.sdk’
clang -arch arm64 -std=gnu2x -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/Rcpp/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/unsupported" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/src/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppParallel/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DUSE_STANC3 -DSTRICT_R_HEADERS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -D_HAS_AUTO_PTR_ETC=0 -include '/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp' -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1 -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c foo.c -o foo.o
In file included from <built-in>:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp:22:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Core:19:
/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Macros.h:679:10: fatal error: 'cmath' file not found
#include <cmath>
^~~~~~~
1 error generated.
make: *** [foo.o] Error 1
Family: beta
Links: mu = logit; phi = identity
Formula: y ~ x
Data: data.frame(x, y) (Number of observations: 99)
Draws: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
total post-warmup draws = 4000
Regression Coefficients:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept -0.56 0.09 -0.73 -0.38 1.00 3143 2811
x 0.92 0.10 0.72 1.12 1.00 3052 3167
Further Distributional Parameters:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
phi 4.69 0.63 3.55 6.01 1.00 2757 3045
Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).
Robust Student-t Regression (Bayesian)
# Simulate some data for Student-t regressionset.seed(123)n <-100x1 <-rnorm(n)y <-5+2* x1 +rt(n, df =3) # Simulate t-distributed errorsdf <-data.frame(y,x1)# Student-t regression using brm (Bayesian)student_brm <-brm(y ~ x1, family =student(), data = df)
Running /Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB foo.c
using C compiler: ‘Apple clang version 15.0.0 (clang-1500.3.9.4)’
using SDK: ‘MacOSX14.4.sdk’
clang -arch arm64 -std=gnu2x -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/Rcpp/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/unsupported" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/src/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppParallel/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DUSE_STANC3 -DSTRICT_R_HEADERS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -D_HAS_AUTO_PTR_ETC=0 -include '/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp' -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1 -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c foo.c -o foo.o
In file included from <built-in>:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp:22:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Core:19:
/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Macros.h:679:10: fatal error: 'cmath' file not found
#include <cmath>
^~~~~~~
1 error generated.
make: *** [foo.o] Error 1
Family: student
Links: mu = identity; sigma = identity; nu = identity
Formula: y ~ x1
Data: df (Number of observations: 100)
Draws: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
total post-warmup draws = 4000
Regression Coefficients:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept 5.01 0.12 4.78 5.24 1.00 3261 2917
x1 1.79 0.13 1.54 2.04 1.00 3528 2791
Further Distributional Parameters:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sigma 0.91 0.12 0.70 1.17 1.00 3304 2725
nu 2.05 0.49 1.30 3.17 1.00 3020 2045
Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).
Running /Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB foo.c
using C compiler: ‘Apple clang version 15.0.0 (clang-1500.3.9.4)’
using SDK: ‘MacOSX14.4.sdk’
clang -arch arm64 -std=gnu2x -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/Rcpp/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/unsupported" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/src/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppParallel/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DUSE_STANC3 -DSTRICT_R_HEADERS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -D_HAS_AUTO_PTR_ETC=0 -include '/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp' -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1 -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c foo.c -o foo.o
In file included from <built-in>:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp:22:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Core:19:
/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Macros.h:679:10: fatal error: 'cmath' file not found
#include <cmath>
^~~~~~~
1 error generated.
make: *** [foo.o] Error 1
Family: zero_one_inflated_beta
Links: mu = logit; phi = identity; zoi = logit; coi = logit
Formula: y ~ x1 + x2
zoi ~ x1 + x2
coi ~ x1 + x2
Data: data (Number of observations: 400)
Draws: 2 chains, each with iter = 1500; warmup = 500; thin = 1;
total post-warmup draws = 2000
Regression Coefficients:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept 0.22 0.05 0.11 0.33 1.00 3790 1374
zoi_Intercept -0.55 0.11 -0.76 -0.33 1.00 4359 1154
coi_Intercept -1.45 0.21 -1.86 -1.06 1.00 3464 1754
x1 0.46 0.06 0.35 0.57 1.00 3800 1223
x2 0.58 0.05 0.47 0.69 1.00 3868 1502
zoi_x1 0.34 0.12 0.12 0.57 1.00 3936 1415
zoi_x2 -0.20 0.10 -0.41 0.01 1.00 3702 1426
coi_x1 0.14 0.23 -0.33 0.60 1.00 3031 1532
coi_x2 0.54 0.22 0.11 0.96 1.00 4192 1489
Further Distributional Parameters:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
phi 4.86 0.38 4.14 5.63 1.00 2994 1331
Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).
Ordered Beta Regression
Running /Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB foo.c
using C compiler: ‘Apple clang version 15.0.0 (clang-1500.3.9.4)’
using SDK: ‘MacOSX14.4.sdk’
clang -arch arm64 -std=gnu2x -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/Rcpp/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/unsupported" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/src/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppParallel/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DUSE_STANC3 -DSTRICT_R_HEADERS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -D_HAS_AUTO_PTR_ETC=0 -include '/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp' -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1 -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c foo.c -o foo.o
In file included from <built-in>:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp:22:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Core:19:
/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Macros.h:679:10: fatal error: 'cmath' file not found
#include <cmath>
^~~~~~~
1 error generated.
make: *** [foo.o] Error 1
Family: ord_beta_reg
Links: mu = identity; phi = identity; cutzero = identity; cutone = identity
Formula: y ~ x1 + x2
Data: data (Number of observations: 400)
Draws: 2 chains, each with iter = 1500; warmup = 500; thin = 1;
total post-warmup draws = 2000
Regression Coefficients:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept 0.19 0.06 0.08 0.29 1.01 2055 1457
x1 0.33 0.05 0.23 0.43 1.00 2244 1636
x2 0.51 0.05 0.42 0.61 1.00 2630 1505
Further Distributional Parameters:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
phi 4.57 0.38 3.86 5.33 1.00 2507 1643
cutzero -0.78 0.13 -1.03 -0.53 1.00 2041 1586
cutone 1.28 0.06 1.16 1.39 1.00 2391 1540
Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).